#pragma once
#include"Logger.hpp"
#include "Util.hpp"
#include "Level.hpp"
#include "Message.hpp"
#include "Formatter.hpp"
#include "Sink.hpp"
#include "Logger.hpp"
#include "buffer.hpp"
#include "Looper.hpp"
namespace shw
{
    Logger::ptr getLogger(const std::string& name)
    {
        return LoggerManager::GetInstanceLogM().Getlogger(name);
    }
    const Logger::ptr& getRootLogger()
    {
        return LoggerManager::GetInstanceLogM().GetRootlogger();
    }
    
    #define Debug(fmt,...) Debug(__FILE__,__LINE__,fmt,##__VA_ARGS__) 
    #define Info(fmt,...) Info(__FILE__,__LINE__,fmt,##__VA_ARGS__) 
    #define Warn(fmt,...) Warn(__FILE__,__LINE__,fmt,##__VA_ARGS__) 
    #define Error(fmt,...) Error(__FILE__,__LINE__,fmt,##__VA_ARGS__) 
    #define Fatal(fmt,...) Fatal(__FILE__,__LINE__,fmt,##__VA_ARGS__) 

    //默认日志器
    #define DEBUG_LOG(fmt,...) shw::getRootLogger()->Debug(fmt,##__VA_ARGS__)
    #define INFO_LOG(fmt,...) shw::getRootLogger()->Info(fmt,##__VA_ARGS__)
    #define WARN_LOG(fmt,...) shw::getRootLogger()->Warn(fmt,##__VA_ARGS__)
    #define ERROR_LOG(fmt,...) shw::getRootLogger()->Error(fmt,##__VA_ARGS__)
    #define FATAL_LOG(fmt,...) shw::getRootLogger()->Fatal(fmt,##__VA_ARGS__)
}